package com.tuling.mall.feigndemo.remote;

import com.tuling.common.utils.R;
import com.tuling.mall.feigndemo.vo.OrderVo;
import feign.Headers;
import feign.Param;
import feign.RequestLine;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * feign 可以单独使用，添加相关依赖就行
 * @author Fox
 */
public interface RemoteService {
    
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestLine("GET /order/findOrderByUserId/{userId}")// feign自身自带的原生注解
    R findOrderByUserId(@Param("userId") Integer userId);// 方法名字跟服务提供方保持一致

    /**
     * 对应的服务提供方法是
     * public R save(@RequestBody OrderEntity order){
     * 二者只是参数名不一样， 参数名不一样是可以的。 request对象会解析json，解析出来的数据会封装成
     * 我们指定的java实体类。
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})// 指定接收 json数据
    @RequestLine("POST /order/save")
    public R save(@RequestBody OrderVo order);
    // OrderVo实体类，  在mall-order项目中用的是OrderEntity，所以对象可以不一样。因为springMVC有内置的消息转换器


}
